package be.groept.ace.cursusplanning.utils;

/**
 * @author 	Kevin Brigitta
 * @author 	Gouke Leplat
 * @author	Abdelkarim Boujida
 * @version 	%G%, %I%
 */
public enum Maand {
    JANUARI(1, 31),
    FEBRUARI(2, 29),
    MAART(3, 31),
    APRIL(4, 30),
    MEI(5, 31),
    JUNI(6, 30),
    JULI(7, 31),
    AUGUSTUS(8, 31),
    SEPTEMBER(9, 30),
    OKTOBER(10, 31),
    NOVEMBER(11, 30),
    DECEMBER(12, 31);
    
    private final int aantalDagen;
    private final int maandNummer;
    
    private Maand(int maandNummer, int aantalDagen) {
	this.aantalDagen = aantalDagen;
	this.maandNummer = maandNummer;
    }
    /**
     * Aantal dagen voor de maand, afhangend van het jaar
     * 
     * @param jaar het jaartal mee doorgeven, want de maximum aantal dagen van een maand hangt soms af van het jaartal
     * @return integer aantal dagen
     */
    public int getAantalDagen(int jaar) {
	if(getMaandNummer() == 2) { //indien het februari is
	    if (Datum.isSchrikkeljaar(jaar)) return 29; //schrikkeljaar?
	    return 28;
	}
	return aantalDagen;
    }
    
    /**
     * MaandNummer
     * 
     * @return integer maand nummer
     */
    public int getMaandNummer() {
	return maandNummer;
    }
    
    /**
     * Geeft de Maand terug van de maandnummer
     * 
     * @param maand integer maand
     * @return Maand dat overeenkomt met de ingegeven maand en null als er geen overeenkomende maand bestaat
     */
    public static Maand getMaandUitInteger(int maand) {
	for(Maand m: Maand.values()) {
	    if(m.getMaandNummer() == maand) {
		return m;
	    }
	}
	return null;
    }
}
